package com.qf.day31_boot.dao;

import com.qf.day31_boot.entity.User;


import com.qf.day31_boot.vo.vo.UserVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface UserDao {

    public User getUserByNameAndPassword(@Param("name") String name, @Param("pwd") String password);

    public User getUserById(Integer id);

    public User getUserByIdAndPassword(@Param("id") Integer id, @Param("pwd") String password);

    public User selectUserByIdAndPwd_map(Map map);

    public User selectUserByUserInfo(User user);

    public List<User> selectUsersByName(@Param("name") String name);

    public Integer deleteUserById(@Param("id") Integer id);

    public Integer updateUser(User user);

    public Integer insertUser(User user);

    // 选择所有没有被点名的同学
    public List<User> getAllUnPickedUsers();

    // 把sex重置为0
    public Integer resetUsers();

    //  演示 sql 注入问题
    public List<User> selectUsersByKeyword(@Param("name") String name);

    // 演示 $ 的使用场景
    public List<User> selectUserByidwithOrder(@Param("order") String order);

    // 查询所有用户,带分页条件
    public List<User> getAllUserByPage(Integer start, Integer size);

    // 查询所有使用后
    public List<User> getAllUsers();

    // 测试让mysql数据库休眠
    public void sleep();

    // 根据用户名查询用户
    User getUserByName(@Param("username") String username);

    // 查询用户表总条数
    Integer selectCount();

    // 分页查询
    List<User> selectUserByPage(@Param("start") Integer start, @Param("limit") Integer limit);

    // 批量删除用户
    void deleteUserByIds(@Param("ids") List<Integer> ids);

    // 根据条件查询用户
    List<User> getUsersByCondition(UserVo userVo);
}
